canal adapter同步异常:field name is null or empty |
您所在的位置:网站首页 › field name › canal adapter同步异常:field name is null or empty |
现象
在使用批量同步数据时出现错误: curl http://127.0.0.1:8081/etl/es7/test-user/test_user.yml -X POST {"succeeded":false,"resultMessage":"导入ES 数据:666 条","errorMessage":"test_user etl failed! ==>field name is null or empty\ntest_user etl failed! ==>field name is null or empty"}adapter日志异常 ERROR c.a.otter.canal.adapter.launcher.loader.AdapterProcessor - java.lang.NullPointerException java.lang.RuntimeException: java.lang.NullPointerException at com.alibaba.otter.canal.client.adapter.es.core.service.ESSyncService.sync(ESSyncService.java:116) ~[na:na] at com.alibaba.otter.canal.client.adapter.es.core.service.ESSyncService.sync(ESSyncService.java:64) ~[na:na] at com.alibaba.otter.canal.client.adapter.es.core.ESAdapter.sync(ESAdapter.java:115) ~[na:na] at com.alibaba.otter.canal.client.adapter.es.core.ESAdapter.sync(ESAdapter.java:94) ~[na:na] at com.alibaba.otter.canal.adapter.launcher.loader.AdapterProcessor.batchSync(AdapterProcessor.java:139) ~[client-adapter.launcher-1.1.5-SNAPSHOT.jar:na] 原因分析提示信息为字段名为null或空,误导以为是字段的问题,其实不是,应该是字段空值导致,但不是对任何字段都有空值错误,最后确定只有在es索引的主键_id字段为空时才会出现异常。 因为在我的导入场景中,es使用了userid作为主键,批量导入时数据较多,其中存在个别userid为空的情况没有发现,导致在全量导入时出现了异常。 解决方案 方案一: 使用非空字段作为es的主键_id; 方案二:在esMapping导入配置中增加条件赛选非空数据,如: etlCondition: "where userid between {} and {}" #指定userid
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |